#include <bits/stdc++.h>

#define in read()
#define fi first
#define se second
#define pb push_back
#define y1 y_alpha_1

using namespace std;

using ll = long long;
using db = double;
using vec = vector<int>;
using pii = pair<int,int>;

int read() {
	int x = 0; bool f = 0; char ch = getchar();
	while(!isdigit(ch)) f |= ch == '-',ch = getchar();
	while(isdigit(ch)) x = (x << 1) + (x << 3) + (ch ^ 48),ch = getchar();
	return f ? -x : x;
}

const int N = 2e5 + 10;

set < int > crd;
int a[N],n,Q,s,d,fa[N],ind[N * 5],dis[N];
vector < pii > G[N];
struct edge { int u,v,w; };
bool operator < (edge a,edge b) { return a.w < b.w; }
vector < vec > cops;
int gf(int x) { return fa[x] == x ? x : fa[x] = gf(fa[x]); }
bool merge(int x,int y) {
	x = gf(x); y = gf(y); if(x == y) return false; x--; y--;
	if(cops[x].size() < cops[y].size()) swap(x,y); fa[y + 1] = x + 1;
	for(auto d : cops[y]) cops[x].pb(d); vec tmp; cops[y].swap(tmp); return true;
}

void dfs(int x,int p,int di) {
	dis[x] = di;
	for(auto d : G[x]) if(d.fi != p) dfs(d.fi,x,max(di,d.se));
}

int main() {
#ifndef ONLINE_JUDGE
	freopen("1.in","r",stdin);
#endif
	n = in,Q = in,s = in,d = in; for(int i = 1;i <= n;i++) a[i] = in,ind[a[i]] = i;
	for(int i = 1;i <= n;i++) crd.insert(a[i]);
	for(int i = 1;i <= n;i++) fa[i] = i,cops.pb({i});
	int cnt = 0;
	while(cnt < n - 1) {
		vector < edge > mrg;
		for(auto cop : cops) {
			for(auto x : cop) crd.erase(a[x]);
			edge mn = { -1 , -1 , (int)1e9 };
			for(auto x : cop) {
				for(auto dis : { -d,d }) {
					auto it = crd.lower_bound(a[x] + dis);
					if(it != crd.end()) { mn = min(mn,(edge) { x,ind[*it],abs(abs(*it - a[x]) - d) }); }
					if(it != crd.begin()) { it--; mn = min(mn,(edge) { x,ind[*it],abs(abs(*it - a[x]) - d)}); }
				}
			}
			for(auto x : cop) crd.insert(a[x]);
			mrg.pb(mn);
		}
		for(auto d : mrg) if(merge(d.u,d.v)) { cnt++; G[d.u].pb({d.v,d.w}); G[d.v].pb({d.u,d.w}); }
	}
	memset(dis,0x3f,sizeof dis); dfs(s,0,0);
	while(Q--) {
		int x = in,k = in; 
		if(dis[x] <= k) puts("Yes");
		else puts("No");
	}
	return 0;
}
